class Solution {
public:
    int FindGreatestSumOfSubArray(vector<int> array) {
 
        //dp[i]表示以num[i]结尾的连续子数组的最大值
        //状态转移方程，if dp[i-1]>0 dp[i]=dp[i-1]+num[i]
                      //dp[i-1]<0 dp[i]=num[i]
        int len=array.size();
        if(len==0)
            return 0;
        int dp[len];
        dp[0]=array[0];
        int ans=array[0];
        for(int i=1;i<len;i++)
        {
            dp[i]=max(dp[i-1]+array[i],array[i]);
            ans=max(dp[i],ans);
        }
        return ans;
    }
};